home *** CD-ROM | disk | FTP | other *** search
/ APDL Eductation Resources / APDL Eductation Resources.iso / programs / keyboard / mathchars / !MathChars / MakeCode < prev    next >
Encoding:
Text File  |  1991-11-09  |  1.9 KB  |  53 lines

  1. REM >!MathChars.MakeCode
  2. filename$="!MathChars.code"
  3. codelength%=&1000
  4. codestart%=&8000
  5. :
  6. DIM code% codelength%
  7. :
  8. FOR pass%=12 TO 15 STEP 3
  9. PROCasm(pass%)
  10. NEXT
  11. :
  12. OSCLI("Save "+filename$+" "+STR$~code%+" "+STR$~O%)
  13. OSCLI("SetType "+filename$+" Data")
  14. END
  15. :
  16. DEFPROCasm(pass%)
  17. P%=codestart%
  18. O%=code%
  19. L%=code%+codelength%
  20. [OPT pass%
  21.                  STMFD r13!,{r14}
  22.                  SWI   "Wimp_BaseOfSprites" \ Find start of RMA ram sparea (r1)
  23.                  MOV   r0,#256+8            \ Sparea description.
  24.                  SWI   &2e                  \ OS_SpriteOp
  25.                  MOV   r4,r3                \ We will use r4 as a loop counter
  26.                  ADD   r4,r4,#1             \ Increment, to counter dec. later
  27.                  ADR   r2,datablock         \ Useable area
  28.                  MOV   r10,#0
  29. .loop_thru_sprites
  30.                  SUB   r4,r4,#1             \ Decrement loop counter
  31.                  MOV   r0,#13
  32.                  ADD   r0,r0,#256           \ Get sprite name
  33.                  STR   r10,datablock
  34.                  STR   r10,datablock+4
  35.                  STR   r10,datablock+8      \ Clear useable area
  36.                  MOV   r3,#12               \ Size of useable area
  37.                  SWI   &2e
  38.                  LDR   r8,[r2]              \ r8=first 4 bytes of sprite name
  39.                  LDR   r9,comparison_data   \ r9=first 4 bytes of expected name
  40.                  CMP   r8,r9                \ Is sprite ours?
  41.                  MOVEQ r0,#25
  42.                  ADDEQ r0,r0,#256           \ Delete sprite
  43.                  SWIEQ &2e                  \ But only if sprite was ours
  44.                  CMP   r4,#1                \ Check for loop limits
  45.                  BGT   loop_thru_sprites    \ If not, go back
  46.                  LDMFD r13!,{pc}            \ Otherwise, return to caller
  47. .datablock       EQUD 0
  48.                  EQUD 0
  49.                  EQUD 0
  50. .comparison_data EQUS "!cha"
  51. ]
  52. ENDPROC
  53.